package com.mareas.web.jsf.view;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import javax.faces.model.SelectItem;

import org.springframework.stereotype.Component;

import com.mareas.web.model.AgenciaNacional;
import com.mareas.web.model.Buque;
import com.mareas.web.model.Cliente;
import com.mareas.web.model.Operacion;

@Component("addOperacionView")
@ManagedBean
@RequestScoped
public class addOperacionView extends ListAbstractView<Operacion> implements
		Serializable {

	/**
	 *
	 */
	private static final long serialVersionUID = 1L;
	private List<SelectItem> clientesOptions = null;
	private List<SelectItem> agenciasOptions = null;
	private List<SelectItem> buquesOptions = null;

	public addOperacionView() {
		super();
	}

	@Override
	public List<Operacion> getAll() {
		List<Operacion> all = this.getGenericService().getAll(Operacion.class);
		return all;
	}

	@Override
	public Operacion getEdited() {
		if (super.getEdited() == null) {
			super.setEdited(new Operacion());
		}
		return super.getEdited();
	}
	
	@Override
	public void setEdited(Operacion edited) {
		super.setEdited(edited);
	}
	
	@Override
	public Operacion getNew() {
		return new Operacion();
	}
	
	public void getCreateNew() {
		super.setEdited(new Operacion());
	}
	
	public List<SelectItem> getClientesOptions() {
		clientesOptions = new ArrayList<SelectItem>();

		List<Cliente> clientes = getGenericService().getAll(Cliente.class);
		for (Cliente cliente : clientes) {
			clientesOptions.add(new SelectItem(cliente, cliente
					.getClienteNombre()));
		}
		return clientesOptions;
	}

	public void setClientesOptions(List<SelectItem> clientesOptions) {
		this.clientesOptions = clientesOptions;
	}

	public List<SelectItem> getBuquesOptions() {
		buquesOptions = new ArrayList<SelectItem>();

		List<Buque> buques = getGenericService().getAll(Buque.class);
		for (Buque buque : buques) {
			buquesOptions.add(new SelectItem(buque, buque.getBuqueNombre()));
		}
		
		return buquesOptions;
	}

	public void setBuquesOptions(List<SelectItem> buquesOptions) {
		this.buquesOptions = buquesOptions;
	}

	public List<SelectItem> getAgenciasOptions() {
		agenciasOptions = new ArrayList<SelectItem>();

		List<AgenciaNacional> agencias = getGenericService().getAll(AgenciaNacional.class);
		for (AgenciaNacional agencia : agencias) {
			agenciasOptions.add(new SelectItem(agencia, agencia
					.getAgenciaNacionalNombre()));
		}
		return agenciasOptions;
	}

	public void setAgenciasOptions(List<SelectItem> agenciasOptions) {
		this.agenciasOptions = agenciasOptions;
	}

}
